use time::OffsetDateTime;

pub mod gen_id;
pub mod http;
pub mod str;
///一些于电话号码相关的方法
pub mod mobile_num;
///一些语法糖相关的代码
pub mod sugre;
///于网络相关的方法
pub mod network;
pub mod bytes;

///得到当前时间。此时候是存在时区的。目前来说中国区直接加8就好
#[inline]
pub fn current_data_time_with_zone() -> OffsetDateTime {
	OffsetDateTime::now_utc() + time::Duration::hours(8)
}

pub struct BitsField {
	pub position: u8,
	pub mark: u8,
}

///根据给定的值和位置,判断给出的值是否不为0
/// 一般用在只有一位的情况下.
pub fn get_bits_bool(value: u8, pos: &BitsField) -> bool {
	value >> pos.position & pos.mark != 0
}

///根据给定的值和位置,判断给出的值是否不为0
/// 一般用在只有一位的情况下.
pub fn get_bits_value(value: u8, pos: &BitsField) -> u8 {
	value >> pos.position & pos.mark
}

///断言指定两个值的对应位相等
pub fn assert_bits(value: u8, pos: &BitsField, other: u8) -> bool {
	value >> pos.position & pos.mark == other >> pos.position & pos.mark
}

pub fn write_to_bits(value: u8, pos: &BitsField, bit_val: u8) -> u8 {
	value | (bit_val << pos.position)
}
